package com.syq.controller;

import com.syq.dto.DTO;
import com.syq.entity.CourseTemplate;
import com.syq.page.PageInfo;
import com.syq.service.CourseTemplateService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@CrossOrigin
@Controller
@RequestMapping("/courseTemplateController")
public class CourseTemplateController {
	@Resource
	CourseTemplateService courseTemplateService;
	//@RequiresPermissions("courseTemplate:getAll")
	@RequestMapping("/courseTemplates")
	@ResponseBody //把方法的返回值按json转换之后 输出到浏览器
    public DTO<CourseTemplate> getAllCourseTemplate() throws Exception {
    	System.out.println("查询全部课程模板");
		return courseTemplateService.getAllCourseTemplates();
    }

	@RequestMapping("/deleteCourseTemplateByCotno/{cotno}")
	@ResponseBody
    public DTO<CourseTemplate> deleteCourseTemplateByCotno(@PathVariable("cotno") String cotno) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
    	System.out.println(cotno+"删除课程模板");
    	return courseTemplateService.deleteCourseTemplateByCotno(cotno);
    }

	//@RequestMapping("/updateCourseTemplateByCotno")
	@PatchMapping("/courseTemplates")
	@ResponseBody
	public DTO<CourseTemplate> updateCourseTemplateByCotno(@RequestBody CourseTemplate courseTemplate) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
		System.out.println("修改课程模板");
		return courseTemplateService.updateCourseTemplateByCotno(courseTemplate);
	}
    //@SystemMail(op = "CourseTemplate:addCourseTemplate",queueName = "family.mail",module = "课程模板管理",methods = "课程模板注册")
	//@RequestMapping("/addCourseTemplate")
	@PostMapping("/courseTemplates")
	@ResponseBody
	public DTO<CourseTemplate> addCourseTemplate(@RequestBody CourseTemplate courseTemplate) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
		System.out.println("增加课程模板");
 		return courseTemplateService.addCourseTemplate(courseTemplate);
	}

	@RequestMapping("/courseTemplates/page")
	@ResponseBody
	public DTO<CourseTemplate> getCourseTemplateByPage(PageInfo pageInfo) throws Exception{//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
		System.out.println("分页课程模板");
		return courseTemplateService.getCourseTemplateByPage(pageInfo);
	}
	//@RequiresPermissions("courseTemplate:selectCourseTemplateWithChildren")
//	@RequestMapping("/selectCourseTemplateWithChildren/{cotno}")
//	@ResponseBody
//	public DTO<CourseTemplate> selectCourseTemplateWithChildren(@PathVariable("cotno") String cotno) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
//		System.out.println("查询课程模板附上儿童");
//		return courseTemplateService.selectCourseTemplateWithChildren(cotno);
//	}
//	//@RequiresPermissions("courseTemplate:getCourseTemplateWithOrdrees")
//	@RequestMapping("/getCourseTemplateWithOrdrees/{cotno}")
//	@ResponseBody
//	public DTO<CourseTemplate> getCourseTemplateWithOrdrees(@PathVariable("cotno") String cotno ) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
//		System.out.println("查询订单");
//		return courseTemplateService.getCourseTemplateWithOrdrees(cotno);
//	}

//	@RequestMapping("/getOrderCookie/{cotno}")
//	@ResponseBody
//	public DTO<CourseTemplate> getOrderCookie(@PathVariable("cotno") String cotno, HttpServletRequest request, HttpServletResponse response) throws Exception{
//		//cookie是以key value形式存放在浏览器的文本
//		ObjectMapper objectMapper = new ObjectMapper();
//		DTO dto = new DTO(200, "cookie选课获取成功");
//		Cookie[] cookies = request.getCookies();
//		CourseTemplate courseTemplate = null;
//		if(Optional.ofNullable(cookies).isPresent()){
//			List<Orderrecord> orderrecords = new ArrayList<Orderrecord>();
//			for(Cookie cookie :cookies){
//				if(cookie.getName().indexOf("courseTemplate" + cotno+"_")>=0){
//					Orderrecord orderrecord = objectMapper.readValue(URLDecoder.decode(cookie.getValue()), Orderrecord.class);
//					orderrecords.add(orderrecord);
//				}
//				if(cookie.getName().equals("courseTemplate" + cotno)){
//					courseTemplate = objectMapper.readValue(URLDecoder.decode(cookie.getValue()), CourseTemplate.class);
//				}
//
//			}
//			if(Optional.ofNullable(courseTemplate).isPresent()){
//				courseTemplate.setOrderrecords(orderrecords);
//				dto.setT(courseTemplate);
//			}else{
//				dto.setCode(404);
//				dto.setMsg("没有cookie");
//			}
//		}
//
//
//		return dto;
//	}

//	public DTO<CourseTemplate> saveSelectCourseCookieProcess(CourseTemplate courseTemplate, HttpServletRequest request, HttpServletResponse response) throws JsonProcessingException, UnsupportedEncodingException {
//		//cookie是以key value形式存放在浏览器的文本
//		DTO dto = new DTO(200,"订单保存成功");
//		if(courseTemplate.getCotno()!=null) {
//			ObjectMapper objectMapper = new ObjectMapper();
//			List<Orderrecord> orderrecords = new ArrayList<>(courseTemplate.getOrderrecords());
//			for (Orderrecord orderrecord : courseTemplate.getOrderrecords()) {
//				Cookie orderrecordsCookie = new Cookie("courseTemplate" + courseTemplate.getCotno() + "_" + orderrecord.getOrrno(), URLEncoder.encode(objectMapper.writeValueAsString(orderrecord), "UTF-8"));
//
//				//courseTemplateCookie.setMaxAge(30*24*60*60);   //存活期为一个月 30*24*60*60
//				orderrecordsCookie.setPath("/");
//				orderrecordsCookie.setDomain("localhost");
//				orderrecordsCookie.setMaxAge(2 * 24 * 60 * 60);   //存活期为2天 2*24*60*60
//				response.addCookie(orderrecordsCookie);
//
//			}
//			courseTemplate.setOrderrecords(null);
//			Cookie courseTemplateCookie = new Cookie("courseTemplate" + courseTemplate.getCotno(), URLEncoder.encode(objectMapper.writeValueAsString(courseTemplate), "UTF-8"));
//			courseTemplateCookie.setPath("/");
//			courseTemplateCookie.setDomain("localhost");
//			courseTemplateCookie.setMaxAge(2 * 24 * 60 * 60);   //存活期为2天 2*24*60*60
//			response.addCookie(courseTemplateCookie);
//			courseTemplate.setOrderrecords(orderrecords);
//		}else{
//			dto.setCode(406);
//			dto.setMsg("缺少必要的参数，非法操作");
//		}
//		return dto;
//	}

//@RequestMapping("/sendCodeMail/{cotname}")
//@ResponseBody
//public DTO<CourseTemplate> sendCodeMail(@PathVariable("cotname") String cotname) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
//	System.out.println("找回密码");
//	return courseTemplateService.sendCodeMail(cotname);
//}
//	@RequestMapping("/updateCourseTemplateByPwd")
//	@ResponseBody
//	public DTO<CourseTemplate> updateCourseTemplateByPwd( CourseTemplateVo courseTemplateVo) throws Exception {//如何从页面传入参数到方法 用这个注解绑定变量@PathVariable
//		System.out.println("修改密码"+courseTemplateVo);
//		System.out.println(courseTemplateVo);
//		return courseTemplateService.updateCourseTemplateByPwd(courseTemplateVo);
//	}
//
//	@RequestMapping("/activate/{cotno}")
//	@ResponseBody
//	public DTO<CourseTemplate> activate(@PathVariable("cotno") String cotno) throws Exception{
//
//		return courseTemplateService.activate(cotno);
//	}

}